/*****************************************************************************
 *   Copyright 2005 Tim A Wang
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 *
 ****************************************************************************/
package com.jb.web.renderer;

import com.jb.web.bean.RadioButton;
import com.jb.web.context.WebContext;

import com.jb.faces.component.UIComponent;


public class RadioButtonRenderer extends FormItemRenderer {
    public StringBuffer render(WebContext pCtx, UIComponent itemToRender) {
        RadioButton formField = (RadioButton) itemToRender;
        StringBuffer html = new StringBuffer("");

        if (!isVisible(pCtx, formField)) {
            return html;
        }

        //submitted value
        String decodedValue = (String) formField.getDecodedValue();

        if (decodedValue == null) {
            decodedValue = (String) evaluate(pCtx, formField, formField.getDefaultValue());
        }

        //this field value
        String value = (String) evaluate(pCtx, formField, formField.getValue());

        String label = (String) evaluate(pCtx, formField, formField.getLabel());

        boolean bValue = (value != null) && value.equals(decodedValue);

        html.append("<span ")            
            .append(addTagProperty("style", formField.getStyle(pCtx), null))
            .append(addTagProperty("styleClass", formField.getStyleClass(), null)).append(">")
        ;
        html.append("<INPUT ").append(addTagProperty("type", "radio", null))
            .append(addTagProperty("name", formField.getGroupName(), null))
            .append(addTagProperty("value", value, null))
        .append(getEditScript(pCtx, formField))
            .append(addTagProperty("checked", (bValue ? "checked" : ""),
                null));

        if (pCtx.isRunTime()) {
            html.append(addTagProperty("disabled", formField.isEnabled() ? "" : "disabled", null));
        }

        html.append(" />" + label + "</span>\n").toString();

        return html;
    }
}
